#pragma once

#include <vector>

#include "Network.h"
#include "../Neuron/KMeansNeuron.h"
#include "../Neuron/RLSNeuron.h"

using namespace std;

class RBF
{
public:
	friend class CRBFLearn;

public:
	RBF() = delete;

	RBF(int inputDimension, int K, int outputDimension, shared_ptr<IKernelFunctionBase> kernelFunc, double imin, double imax);

public:
	virtual bool Save(const char * szFileName = nullptr);

	virtual bool Load(const char * szFileName = nullptr);

	virtual Vector Execute(Vector InputData);

private:
	vector< shared_ptr<CKMeansNeuron> > m_KMeansNeurons;

	vector< shared_ptr<CRLSNeuron> > m_RLSNeuron;
};